home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d21
/
qemmman.arc
/
QEMM-MAN.TXT
< prev
next >
Wrap
Text File
|
1991-09-20
|
95KB
|
2,038 lines
The Quarterdeck Expanded Memory Manager-386 (QEMM-386) is a power-
ful, high performance memory manager and software control program for
80386 PCs and P5/2s. QEMM-386 enhances the utilization of your 386 PC's
memory by providing expanded, extended, and high (640K-1 024K) memory
management. And, as an 80386 control program, QEMM-386 taps into 80386
features important for multitasking and program protection by Quarterdeck's
multitasking environment, DESQview 2.
QEMM-386's expanded memory management capability enablcs you to run
expanded memory programs, such as Paradox 3, Framework 11 and 111,
Microsoft Windows 286 v2, Aldus Pagemaker, and 1-2-3 Release 2 without
having to buy a special expanded memory board. QEMM-386 is compatible
with all three expanded memory specifications (EMS 3.2, EMS 4, and EEMS).
It is also QEMM-386's expanded memory management capability that gives
you use of your PC's high memory. I ligh memory (the memory addresses be-
tween 640K and 1024K) has been traditionally reserved by IBM for use by
your system hardware. As DOS programs have become larger, and as you
have need to run several programs at once, high memory has increased in im-
portance. The reason is that there are often more memory addresses rescrved
for system hardware than are actually being used. So there are precious avail-
able memory addresses, usable by DOS, waiting to be used!
QEMM-386 fills unused memory addresses in your PC's high memory with
expanded memory--so that you can then load TSR's, device drivers (such as
networks), and DOS resources in this memory. Depending on your PC and
the number of hardware add-ons you have, QEMM-386 makes anywllere
from 30-130K more memory available for you to use.
Additionally, if your PC is either a Compaq configured with top memory or
if it has Chips & Technologies shadow RAM, QEMM-386 detects this
memory and makes it usable in the same ways it uses extended memory.
If you need memory more than you need EGA or VGA graphics, QEMM-386
can give you an additional 96K of memory--that can be used by your DOS
program. It does that by making the memory reserved for your EGA or VGA
adapter available to your DOS program. The caveat is that while you are
using this memory, you can't be doing graphics. But, QEMM-386 makes it
easy for you to use or not use this memory.
For P5/2 computers and other computers using microchanllel architecture,
QEMM-386 includes an "Adapter Description Library" (ADL), a record of
many peripheral hardware devices for computers using microchannel ar-
chitecture. QEMM-386 uses this information to insure a maximum amount of
safely accessible high memory with P5/2 computers.
QEMM-386 is also an extended memory manager, compatible with the XMS
extended memory specification, specified by Microsoft and used in Windo~s
286 v2.
3 CHAPTER 1: INTRODUCTION
QEMM-386 is also compatible with DOS extended programs (such as
Paradox 386,1-2-3 Release 3, Oracle Professional, IBM Interleaf). A DOS ex-
tended program is a special DOS program that runs in your PC's protected
mode--but fools DOS into thinking that it is just a normal 640K program.
QEMM-386 does require that DOS Extended programs be compatible with
the Quarterdeck/Phar Lap Virtual Control Program Interface (VCPI) specifica-
tion which specifies how 80386 control programs and DOS Extenders com-
municate to each other.
As an 80386 control program QEMM-386 takes advantage of the 80386's vir-
tual 8086 mode to add screen virtualization and program protection to
Quarterdeck DESQview 2's multitasking capabilities. DESQview is a multi-
tasking, windowing control program that lets you run multiple DOS
programs (1-2-3, Word, Windows 286, Excel, AutoCAD) simultaneously.
Through software in both QEMM-386 and DESQview 2, whicl- controls the
80386 processor, DESQview can run misbehaved (i.e. text or graphics
programs which write directly to the screen) DOS programs in backgroUnd,
display each program running in a small window on tl-e screen, and protect
the system against bugs in programs. In addition, QEMM-386 enables
DESQview to multitask DOS extended and normal DOS programs simul-
taneously. The bundle of the two products, DESQview 2 and QEMM-386, is
known as DESQview 386.
Below is a summary of QEMM-386's features. QEMM-386:
U Is an expanded memory manager, compatible with EMS 3.2, EEMS, and
EMS 4.
O Is an extended memory manager, compatible with XMS. QEMM-386 sup-
ports all three forms of the specification--high memory area (HMA),
upper memory blocks (UMB), and extended memory blocks (EMB).
O Is compatible with the Quarterdeck/Phar Lap Virtual Control Progralll
Interface (VCPI) interface, which specifies how DOS Extended programs
interface with 80386 control programs.
O Is a high memory manager, which enables you to run devicc drivers,
TSR's and DOS resources (such as FILES, BUFFERS, etc.) specified in
your PC's CONFIG.SYS and AUTOEXEC.BAT fik~s, in high memory.
O Detects Chips & Technologies shadow RAM and uses tl-is memory in tlle
same ways it uses extended memory.
O Detects Compaq computer "top memory" and uses tl-is memory in the
same ways it uses extended memory.
O Lets you specify how much memory is to be used for expanded and ex-
tended memory.
4 CHAPTER 1: INTRODUCTION
O Fills out any missing memory in your PC's 0-640K conventional memory
area, and in the 640K-1024K high memory area. QEMM-386 can fill areas
as small as 4K with memory.
O Incorporates an Adapter Description Library, a record of RAM and ROM
addresses used by microchannel peripheral adapter cards, to resolve
memory addressing conflicts of microchannel architecture peripheral
devices.
O Automatically detects the speed of high memory and uses fast memory
whenever possible.
O Optionally maps slow ROM code into fast RAM.
O Supports EMS4 real alternate maps.
O Automatically controls Direct Memory Access (DMA) of all mapped
memory.
O Enables a user, willing to forego the enhanced graphics capabilities per-
mitted by EGA and VGA adapter cards, to increase the memory used by
DOS by 96K--thus making as much as 736K of memory, instead of the
standard 640K, available to DOS.
O Provides extensive reporting and analytical information about the first
megabyte of memory.
O Transforms Quarterdeck's DESQview 2.2 into an 80386 control program--
capable of running multiple DOS programs simultaneously with multi-
ple DOS extended programs. This combination of QEMM-386 and
DESQview 2.2 is called DESQview 386.
QEMM-386 is a very powerful program. Because of this power, QEMM-386 is
very technical in nature. Knowing this, we've tried to make it as easy as pos-
sible for non-technical users to install and optimally configure their memory.
As a result, most users need only to know the command, INSTALL. QEMM-
386's installation program looks at your PC and sets whatever command line
parameters it needs to transform your memory into expanded memory. Your
PC is ready to be used.
However, QEMM-386 goes one step further. QEMM-386 also has an program,
called Optimize, which can automatically alter your AUTOEXEC.BAT and
CONFIG.SYS files to load programs into the optimal regions of high memory.
For the PC guru, who likes to fine-tune a PC to get optimum utilization of
memory, QEMM-386 has some very powerful features. QEMM-386 watches
your memory to determine what memory is accessed by programs. QEMM-
386 then analyzes memory and recommends what additional high memory
can be used to load TSRs, drivers etc. "Analyze" is for the brave, and does
come with warnings to be careful.
5 CHAPTER 1: INTRODUCTION
Built-in to QEMM-386 is a comprehensive reporting facility. Using these
reports, you can display status information about QEMM-386 and maps of
the first megabyte of memory. One map shows you the first megabyte as
QEMM- 386 sees it; another shows a map of what memory your programs
have accessed; a third map shows QEMM-386's analysis of what high
memory can be used or not. The information displayed is the same informa-
tion that is provided by Quarterdeck's memory analysis and reporting pro-
gram, Manifest.
nual QEMM-386 is really a set of programs that help you get the best utilization of
your memory. If you are a non-technical PC user, there is no need to read any
further than Chapter 2, Installation. The remaining chapters of the manual
are intended as references and should be used if you have a problem in in-
stalling QEMM-386 or if you wish to fine-tune QEMM-386. The QEMM-386
manual is organized as follows:
O Chapter 2, Installation describes how to install QEMM-386 and use the
QEMM-386 Optimize program.
O Chapter 3, The QEMM.SYS Program lists the QEMM-386 command line
parameters used to set up your PC's memory.
U Chapter 4, The QEMM.COM Program describes how to change QEMM's
current state (ON, OFF, or AUTO), and describes the QEMM memory
reports.
O Chapter 5, The LOADHI Programs describes how to load TSR's and
device drivers in high memory.
O Chapter 6, DOS Resources Programs describes the programs used to load
DOS BUFFERS, FILES, FCBS, and LASTDRIVE in high memory.
O Chapter 7, The VIDRAM Program describes how to use the EGA/VGA
video memory to run programs.
O Chapter 8, Other QEMM-386 I'rograms describes EMS2EXT, which lets
you specify how much memory to set as expanded and extended
memory, and EMS, which lets the technical user view and manipulate
EMS handles.
O The appendices cover four topics: Appendix A: Troubleshooting, Appen-
dix B: Making a Boot Disk, Appendix C: Creating a Pure Environment,
and Appendix D: Modifying the MCA.ADL File.
6 CHAPTER 1: INTRODUCTION
You install QEMM-386 by running the QEMM installation program,
INSTALL. You should also use INSTALL if you are installing an upgrade of
QEMM-386.
If you have a new 80386 PC, be sure to complete the standard installation
and setup procedures of your PC before installing QEMM-386.
QEMM-386 is a device driver, which means that it must be loaded as part of
the boot sequence of your PC. INSTALL automatically crcates the necessary
command to load QEMM-386 and places it at the beginning of your
CONFIG.SYS file--or creates a CONFIG.SYS file if you don't have one al-
ready.
INSTALL also installs Manifest, Quarterdeck's comprehensive memory
reporting and analysis program, if Manifest is bundled together with
QEMM-386. Manifest describes your PC, specifically the software and
hardware that use your memory. In doing so, it gives you an understanding
of how best to use your PC's memory.
As a precaution, before installing QEMM-386, you should check that there is
no other expanded memory manager loaded in your CONFIG.SYS. An ex-
panded memory manager characteristically has the letters, EMM in its namc.
Also, if Microsoft's HIMEM.SYS extended memory managcr is specified in
your CONFIG.SYS file, you should remove it. QEMM-386 is an cxtended
memory manager, and provides the same functionality as HIMEM.
To install QEMM-386:
∙ Place the QEMM-386 diskette in drive A.
∙Type A:INSTALL and press ~.
NOTE: If you have an LCD or Gas Plasma display, as on some laptops, we
recommend that you:
∙Type A:lNSTALL/m and press ~.
Follow the instructions on the screen. INSTALL copies tl-c QEMM files to
your hard disk and allows you to configure QEMM. INSTALL's base con-
figuration settings, for most of you, will bc correct.
The most common reason that you'll want to changc QEMM-386's settings
is when you're using VDISK. Normally, QEMM-386 takes all of extended
memory for itself. If you're using VDISK, you'll want to allocate part of ex-
tended memory to VDISK, using QEMM's EXTMEM con-mand line
parameter. (For information on tl-e EXTMEM parametcr, sce Cl-apter 3: Thc
QEMM.SYS Program, page 16.)
7 CHAPTER 2: INSTALLATION
INSTALL displays a separate screen for each instruction you are likely to
want to change. For information about the QEMM's command line
parameters, see Chapter 3 The QEMM.SYS Program, page 11.
That's all there is to installing QEMM-386. Since QEMM-386 is a device
driver, you do have to reboot your system for its settings to take effcct. Most
likely, your memory has been configured by INSTALL in the following way:
O All the memory in your PC has been made into expandcd memory, com-
patible with the EMS 4 expanded memory specification.
O If you are installing an upgrade to QEMM-386, the install program
honors the way you have previously configurcd your memory.
To see how your memory is used, refer to Memory Report in Chaptcr 4, Tl-c
QEMM.COM Program on page 27. To see a map of your first n~egabyte of
memory, see Chapter 4 The QEMM.COM Program, Type Report, pagc 24.
Also, if you are unfamiliar with memory, please rcfer to Quarterdeck's
Manifest program. Manifest explains memory (first meg, expanded, cx-
tended). It describes the various expanded memory specifications. It also
gives you information about your DOS configuration and tl-e hardware in
your PC. Manifest does display the same information, in it's category called
QEMM-386, as does the QEMM.COM program--but in a morc pleasing
visual format.
The last screen displayed by the QEMM-386 installation program is a screel-
that tells you to reboot your PC to load QEMM-386, and recon-mends thclt
you then run the Optimize program. Optimize loads your TSR's, devicc
drivers, and DOS resources in high memory. By loading these in l-igl-
memory, you have more memory below 640K available for programs.
Optimize does two things:
O First it modifies the QEMM.SYS command line--adding thc RAM
parameter. This parameter maps memory into any available memory ad-
dresses in the high memory addresses between 64()K and 1024K. Wc call
the memory mapped into these available addresses, high RAM. I ligl~
RAM is memory ready to be used to load TSR's, drivers (sucl- as net-
works), and DOS resources--thus freeing memory below 640K and
giving your DOS programs more memory in which to run.
O Then it looks at your CONFIG.SYS and AUTOEXEC.BAT files to dctcr-
mine what can be loaded in High RAM using QEMM-386's LOAvHI,
and DOS resources programs. It tl-en changes your CONFIG.SYS and
AUTOEXEX.BAT files accordingly.
If you aren't using large DOS programs and hence aren't suffering from
RAM cram, you won't need to run Optimize. Also if you are a sopl-isticated
user, you may wish to choose what is loaded high. In this case, please rcfcr
8 CHAPTER 2: INSTALLATION
to Chapter 5, The LOADHI Programs, and Chapter 6, DOS Resource
Programs.
After rebooting, your PC is ready to run expanded memory programs.
NOTE: the QEMM-386 program, VIDRAM, discussed in Chapter 7 The
VIDRAM Program, can make 96K more memory available to your DOS pro-
gram--if you don't need to use EGA or VGA graphics.
If after rebooting, your system fails to initialize, you can recover without
having to resort to a boot floppy by doing the following:
∙ Reset your system again. Use the power switch if necessary.
∙Wait until you hear a beep, then hold down the Alt key.
QEMM pauses with the message, "QEMM; Press any key to continue. Esc to
abort."
∙ Press the Esc key.
Your system will then proceed with the boot sequence. QEMM will not be
loaded and thus, no programs will be loaded into high RAM. Your system
will, however, be usable. Refer to Chapter 3, The QEMM.SYS Program on its
parameters for changes needed on your system. See also Appendix A
Troubleshooting for additional guidelines..
The Optimize program scans your CONFIG.SYS and AUTOEXEC.BAT files
to find device drivers, TSRs, and DOS resources that can be put in the high
memory area. From its analysis, Optimize makes the changes to these files to
make use of this memory for you. It also makes sure you have a memory
manager installed that can turn the high memory area into high RAM.
For many, the use of Optimize during installation is all that is necessary to
make immediate use of the high memory area. To run Optimize:
∙ Change to the subdirectory that you used to install QEMM-386.
∙Type Optimize and press ~.
In special situations, some of you will want to customize your system fur-
ther. The reference sections in this manual are for that purpose. In particular,
see the Chapter 5 The LOADHI Programs, and Chapter 6 The DOS Resource
Programs. In either case, we recommend that you run Optimize now. The
changes you will see in your start-up files will help you use these programs.
If you choose not to run Optimize now, you can run it at any time in the fu-
ture. In fact, you should run Optimize whenever you add device drivers,
TSRs, change your DOS resources memory or change your high memory
configuration in any way.
9 CHAPTER 2: INSTALLATION
Optimize changes CONFIG.SYS and AUTOEXEC.BAT. Your original files are
first copied to CONFIG.QDK and AUTOEXEC.QDK. Optimize also re-boots
your system twice before it is done. When it completes, your system should
have programs and data in high RAM. And, your application programs
should have more memory available to them.
NOTE: If your AUTOEXEC.BAT file runs a program that is not a TSR (that
is, it does not exit immediately on its own), then you will have to quit that
program manually to allow Optimize to continue.
Optimize does not attempt to read or analyze any batch files it finds within
your AUTOEXEC.BAT. Any TSRs loaded from within an embedded batch
file will not be loaded into high RAM. If at all possible, consider putting the
contents of these batch files directly into AUTOEXEC.BAT. Then re-run Op-
timize to gain even more memory.
ize To run Optimize at any time in the future, change to the subdirectory that
~n your used to install QEMM-386 and
∙Type Optimize and press ~.
Optimize changes CONFIG.SYS and AUTOEXEC.BAT. Your original files are
first copied to CONFIG.QDK and AUTOEXEC.QDK. Optimize also re-boots
your system twice before it is done. When it completes, your system should
have programs and data in high RAM. And, your application programs
should have more memory llvail~ble to them
10 CHAPTER 2: INSTALLATION
This chapter is the reference guide for the command line parameters used
with QEMM.SYS. Since QEMM.SYS, on installation, uses the command line
parameters it thinks appropriate for your system, you should not have to use
the commands in this chapter unless you want to fine-tune your memory
configuration or you are experiencing problems.
To use a QEMM.SYS command line parameter you type the parameter name
on the same line as DEVICE=QEMM.SYS in your CONFIG.SYS file. You
may use an abbreviation instead of the parameter name. The abbreviation
for each QEMM.SYS command line parameter is shown below in paren-
theses after each parameter name. For example, the QEMM.SYS command
line with the RAM and ROM parameters set, looks like:
DEVICE=QEMM.SYS RAM ROM=COOO
IMPORTANT: Do not put spaces within a parameter. In the example above,
make sure that you don't have a space before or after the = sign in
ROM=COOO. Also, all of the parameters must be typed on the same line as
DEVICE=QEMM.SYS.
There are three categories of QEMM.SYS parameters: frequently used
parameters, fine-tuning parameters, and parameters to try when QEMM
does not work. Note there is often no good way of knowing that a parameter
will help your situation--you'll have to experiment.
Most frequently used QEMM.SYS command line parameters are:
O RAM or RAM=xxxx-yyyy puts RAM everywhere or in the range
specified. The RAM parameter must be set if you want to run TSRs,
drivers or DOS resources in high memory.
O ROM or ROM=xxxx-yyyy puts ROM everywhere or in the range
specified. Specifying ROM usually results in the ROM code running
much faster since RAM is often faster than ROM.
O INCLUDE=xxxx-yyyy, (I), considers the range specified mappable.
O EXCLUDE=xxxx-yyyy, (X), considers the range specified unmappable.
QEMM-386 command line parameters to use when fine-tuning your
memory include:
O HELP displays all QEMM.SYS parameters and a one line description of
what each does.
O ? displays a list of all QEMM.SYS command line parameters and where
appropriate the abbreviation for the parameter.
O ADAPTERRAM=xxxx-yyyy, (ARAM), indicates that an adapter has
RAM in the range specified.
11 CHAPTER 3: THE QEMM.SYS PROGRAM
O ADAPTERROM=xxxx-yyyy, (AROM), indicates that an adapter has
ROM in the range specified.
O AUTO, (AU), sets QEMM to turn on if necessary.
O COMPAQEGAROM, (CER), relocates Compaq's video ROM.
O COMPAQHALFROM, (CHR), splits Compaq's system ROM in half.
O COMPAQROMMEMORY, (CRM), uses Compaq ROM memory.
O DOS4, (D4), alters EMS page ordering for DOS 4.00.
O EXTMEM=xxxxx, (EXT), specifies the amount of extended memory
which should not be used by QEMM.
O FRAME=xxxx, (FR), sets the page frame location (either a segment or
NONE).
O HMAMIN=xx sets the minimum size of the HMA (0-63K).
O MAPS=xx, (MA), sets the number of alternate register sets.
O MEMORY=xxxxx, (ME) or (MEM), specifies the 80386 extended
memory that QEMM uses both for itself and as expanded memory.
O NOEMS tells QEMM not to be an expanded memory manager.
O NOPAUSEONERROR, (NOPE), doesn't pause on error.
O OFF, (OF), turns QEMM off.
O ON turns QEMM on.
O PAUSE pauses while parsing commands.
O WATCHDOG=[0,1,2], (WD), sets the type of watchdog timer.
QEMM.SYS command line parameters that should only be used when ex-
periencing problems include:
O DISKBUF=xx, (DB), specifies the size in K of the disk buffer to use to
handle SCSI disk drives.
O COMPAQ386S, (C386S), identifies your PC as a Compaq 386S.
O DMA=xx, (DM), sets the size of the DMA buffer.
O HANDLES=xxx, (HA), sets the number of EMS handles.
O IGNOREA20, (IA), does not trap the 8042.
O NOCOMPAQFEATURES, (NCF), disables use of EGAROM,
HALFROM, and ROMMEMORY on a Compaq computer.
12 CHAPTER 3: THE QEMM.SYS PROGRAM
O NOFILL, (NO), doesn't fill conventional memory.
O NOHMA instructs QEMM to consider the HMA already allocated.
O NOROM, (NR), doesn't map the reboot page of the system ROM.
O NOROMHOLES, (NRH), doesn't look for holes in the system ROM.
O NOSHADOWRAM, (NOSH), doesn't use Shadow RAM.
O NOSORT, (NS), doesn't sort memory.
O NOTOPMEMORY, (NT), doesn't look for top memory.
O NOVIDEOFILL, (NV), doesn't fill video memory.
O NOXBDA, (NX), doesn't move the extended BIOS data area.
O NOXMS instructs QEMM to not be an extended memory manager.
O OLDDV, (ODV), tells QEMM that you are running DESQview 1.3 or
2.00.
O TASKS=xx, (TA), sets the interrupt nesting level.
O UNUSUAL8042, (U8), tells QEMM that your 8042 is non-standard.
O UNUSUALEXT, (UX), tells QEMM that the method of determining the
amount of extended memory is non-standard.
Described below are the QEMM.SYS command line parameters that you
use most frequently.
O RAM or RAM=xxxx-yyyy specifies that QEMM should "fill in" areas of
memory above 640K and below 1024K which do not have ROM, RAM,
or adapter RAM in them. These areas can then be used by the LOADHI
programs and DESQview's XDV program. You may specify RAM
without the address range xxxx-yyyy and let QEMM automatically use
all appropriate memory addresses. If RAM is specified, QEMM's initial
state is forced ON and cannot be overridden.
O ROM or ROM=xxxx or ROM=xxxx-yyyy specifies areas of ROM which
should be copied to RAM and then mapped into the same place. xxxx
and yyyy are hexadecimal numbers which specify the address range
which should be copied. Specifying ROM usually results in the ROM
code running much faster since RAM is often faster than ROM. For ex-
ample, to have the system BIOS ROM mapped into RAM you would
use ROM=FOOO-FFFF. To map an EGA ROM use ROM=COOO as in the
last example, only specify the starting address and let QEMM determine
the size of the ROM. You may specify ROM without the address range
xxxx-yyyy and let QEMM map all ROMs. If ROM is specified, QEMM's
initial state is forced ON and cannot be overridden.
13 CHAPTER 3: THE QEMM.SYS PROGRAM
O INCLUDE=xxxx-yyyy, (I), specifies an area of memory which should be
under the control of QEMM. xxxx and yyyy are hexadecimal numbers
which specify the address range (xxxx-yyyy) which should be included.
xxxx should be a multiple of 4K. Under normal conditions, QEMM auto-
matically detects all usable areas. This parameter is most frequently
used based on suggestions made by the QEMM Analysis procedure (see
Chapter 4, The QEMM.COM Program, page 27). Another use is if you
wanted to have QEMM use an unused video area, such as the color area
when using a VGA with a monochrome monitor, then INCLUDE=B800-
BFFF would be appropriate. The INCLUDE and EXCLUDE options are
processed sequentially, so it is possible to EXCLUDE an area and then
INCLUDE a part of it later on the command line.
O EXCLUDE=xxxx-yyyy, (X), specifies an area of memory in the first
megabyte which should not be under the control of QEMM.SYS. You
only need to specify an excluded region if QEMM.SYS cannot automat-
ically detect it. xxxx and yyyy are hexadecimal numbers which specify
either the address range (xxxx-yyyy) which should be excluded. xxxx
should be a multiple of 4K. For example, if you have a network adapter
that uses 16K of memory at address CCOO, then you would use EX-
CLUDE=CCOO-CFFF. You may specify multiple ranges by using EX-
CLUDE several times.
Note that QEMM needs at least 64K of contiguous memory between 640K
and 960K (AOOO to FOOO) for a page frame, so care must be taken to leave at
least 64K free in this area. If a 64K area can not be found above 640K, then
576K (9000) will be automatically selected by QEMM.SYS. If selected, the
9000 address will reduce the amount of memory available to DOS by 64K.
(See also Page 16 for more information about the FRAME command line
parameter.)
QEMM.SYS command line parameters that you use in fine-tuning your
memory are listed below.
O HELP displays all QEMM.SYS parameters and a one line description of
what each does.
O ? displays a list of all QEMM.SYS command line parameters and where
appropriate the abbreviation for the parameter.
O ADAPTERRAM=xxxx-yyyy, (ARAM), identifies an area of memory as
having RAM from an adapter of some sort, usually a network adapter,
3270 adapter, or some other special device. Normally QEMM automat-
ically finds these areas, but with some adapters may not be able to. If it
does not, then you use this switch to specify the type of memory in this
area. These devices usually use this RAM to provide very high perfor-
mance by allowing the PC to access some memory on the adapter as
though it is part of the computer's memory. These areas mllst NOT be
14 CHAPTER 3: THE QEMM. SYS PROGRAM
used as high RAM. The ADAPTERRAM switch is just like EXCLUDE,
except that the QEMM.COM Type display will show the area as "Adapt-
er RAM" rather than as "Excluded".
O ADAPTERROM=xxxx-yyyy, (AROM), identifies an area of memory as
having ROM from an adapter of some sort. This ROM area is usually
from a network adapter, 3270 adapter, video adapter, or some other spe-
cial device. Normally QEMM automatically finds these areas, but with
some adapters it may not be able to. If it does not, then you use this
switch to specify the type of memory in this area. The ROM for the
adapter might not be visible to QEMM when it is looking for ROM.
This switch ensures that QEMM will not allow the area to be mappable,
and thus it will not place high RAM into the area. If the ROM is seen by
QEMM and the ROM switch also appears, then the adapter ROM will
be mapped to RAM to speed up access to the ROM. Specifying ADAP-
TERROM is more like EXCLUDE, but allows you to document the ex-
cluded area for yourself.
O AUTO or ON or OFF, (AU or ON or OF), controls whether QEMM puts
the system into virtual 8086 mode and how expanded memory should
be handled. AUTO (AU) specifies that QEMM should tum ON when a
program needs expanded memory. ON specifies that expanded memory
is available and the processor is in virtual 8086 mode. OFF (OF)
specifies that expanded memory is not available and the processor is in
real mode. If you don't specify any of these three parameters, AUTO is
used. We recommend that you use AUTO unless you have a specific
reason for setting the initial state to ON or OFF.
Note that if the RAM or ROM parameters are specified, the initial state
is automatically set to ON, and may not be tumed OFF.
O COMPAQEGAROM, (CER), relocates Compaq's video ROM. Compaq
computers automatically copy the slow EGA or VGA ROM which is ad-
dressed at COOO to fast memory addressed at EOOO. QEMM.SYS reverses
this process to increase the amount of high memory on Compaq com-
puters. It also automatically maps RAM into the addresses of ROM at
COOO to increase the ROM speed. When QEMM.SYS detects a Compaq
386, QEMM.SYS will use COMPAQEGAROM (CER) as a default. If
you want to shut it off, specify NOCOMPAQFEATURES (NCF~ on the
QEMM.SYS command line.
O COMPAQHALFROM, (CHR), splits Compaq's system ROM in half.
Most Compaq 386 computers have two halves to their system ROM.
The two halves are addressed at FOOO-F7FF and F800 ~ These ad-
dresses contain redundant information. QEMM.SYS splits the ROM to
make the redundant section useful for high memory. When QEMM.SYS
detects a Compaq 386, QEMM.SYS sets COMPAQHALFROM (CRM)
as a default. If you want to shut this off, specify NOCOMPAQFEA-
TURES (NCF) on the QEMM.SYS command line.
15 CHAPTER 3: THE QEMM.SYS PROGRAM
O COMPAQROMMEMORY, (CRM), uses Compaq ROM memory. Com-
paq Deskpro 386 computers reserve 128K of high memory addresses to
speed up the system ROM and the EGA ROM. QEMM.SYS can both
speed up the system ROM (using its ROM parameter) and make these
high memory addresses available to load TSR's, device drivers, and
DOS resources, using its LOADHI programs. When QEMM detects a
Compaq 386, QEMM will use COMPAQROMMEMORY (CRM) as a
default. If you want to turn this parameter off, you must specify
NOCOMPAQFEATURES (NCF).
O DOS4, (D4), alters EMS page ordering for DOS 4.00. You use DOS4
only with PC-DOS version 4.00 and when using its /X instruction.
DOS4 instructs QEMM.SYS to deviate from the EMS 4.0 specification
enough to accommodate bugs in early versions of PC-DOS 4.0, which
did not strictly adhere to the EMS 4.0 specification. If you are using PC-
DOS 4.00 we recommend you not use the /X switch to BUFFERS,
VDISK, and FASTOPEN.
O EXTMEM=xxxxx, (EXT), specifies the amount of extended memory
which should not be used by QEMM.SYS. The xxxxx must be in the
range 1 to 31744 representing an allocation of lK to 31744K. This
parameter is useful when using RAM disks and disk caches which use
extended memory, since you can ask QEMM to "leave alone" the
memory needed. If the EXTMEM parameter is omitted, QEMM leaves
no extended memory and uses all it can find. The EXTMEM and
MEMORY parameters have opposite meanings. The EXTMEM means
"leave at least this much memory". MEMORY means "use as much as
this much memory".
O FRAME=xxxx, (FR), specifies the page frame address, which is the ad-
dress of the beginning of the 64K segment through which expanded
memory is mapped according to the EMS specification. Typical loca-
tions for xxxx are: COOO, C400, C800, CCOO, DOOO, D400, D800, DCOO, or
EOOO. In unusual cases AOOO may be used if no free area can be found
and you have a monochrome or CGA video adapter card. A 64K area of
memory should be available at one of these addresses to in order to pro-
vide EMS capabilities. If the FRAME parameter is omitted, the value of
xxxx is chosen by QEMM according to your hardware configuration.
We recommend that you not set FRAME except when QEMM's auto-
matic choice of a base address fails because of a hardware conflict that
QEMM can't detect. If there are no satisfactory addresses available,
QEMM still can be used for memory filling, sorting, high RAM filling,
multitasking and ROM mapping, but not as an expanded memory
manager, by specifying FRAME=NONE.
16 CHAPTER 3: THE QEMM . SYS PROGRAM
O HMAMIN=xx specifies the minimum amount of memory that a pro-
gram which uses the XMS High Memory Area (HMA) can request.
Since only one program can use the HMA but several programs might
want to use it, this parameter only allows a program which uses at least
xxK of memory in the HMA. The parameter is not necessary if you have
only one program which uses the HMA, such as DESQview.
O MEMORY=xxxxx, (ME or MEM), specifies the amount of 80386 ex-
tended memory that QEMM uses both for itself and as expanded
memory. xxxxx should be in the range 128 to 32128, representing an al-
location of 128K to 32128K. If the MEMORY parameter is omitted,
QEMM takes all of the available extended memory.
O NOEMS tells QEMM not to provide any expanded memory services at
all, even for multitasking. It is only useful if you want to load a dif-
ferent expanded memory manager, but you still want to use QEMM.
O NOPAUSEONERROR, (NOPE), doesn't pause on an error. QEMM
usually displays a "Press any key to continue, ESC to abort" message
after parsing command line instructions if there are parameter errors.
This instructs QEMM.SYS to not display the message. When an instruc-
tion causes QEMM.SYS to generate the above error, and when the error
generated has been shown to not cause any disruption of the system,
use the NOPE instruction
O OFF, (OF), see AUTO I ON I OFF.
O ON see AUTO I ON I OFF.
O PAUSE tells QEMM.SYS (and all the QEMM-386 programs) to pause
the display when outputting messages. The PAUSE command permits
you to hit the "Esc" key to stop QEMM.SYS from installing. This is use-
ful when trying out new parameters, so you can abort the load if there
was an error. Note that if there is an error on the QEMM.SYS command
line, QEMM will automatically pause to show you the source of the
error.
O WATCHDOG=O,l, or 2, (WD), specifies the type of watchdog timer set.
In the DESQview Change a Program "Protection level (0-3)" setting,
level one represents protection against programs which lock interrupts
for too long. Watching for locked interrupts depends on the existence of
certain hardware. There are two different kinds of hardware that
QEMM.SYS supports to perform the "WATCHDOG" timer feature. One
is on PS/2s and another is on Compaq Deskpro 386 computers. By
default QEMM.SYS tries to determine which hardware to use. The WD
switch is for a machine which "clones" one or the other of the abovc
mentioned features. WD=O means no watchdog timer; WD=l means
PS/2-style; WD=2 means Compaq-style.
17 CHAPTER 3: THE QEMM.SYS PROGRAM
Described below are those QEMM.SYS command line parameters that
should be used only when you are experiencing problems.
O COMPAQ386S, (C386S), identifies the PC as a Compaq 386S. QEMM
will normally be able to automatically identify the Compaq 386S if
Compaq's Setup program version 6.02 or greater has been run. If you
are not using this version, then this switch is necessary in order for
QEMM to perform the correct optimizations. After using version 6.02 or
greater of Compaq's Setup program, you will not need this switch.
O DISKBUF=xx, (DB), specifies the si~e of the SCSI disk buffer, in K. Be-
cause of the special way that SCSI devices acces memory, QEMM's nor-
mal DMA buffering is not adequate. QEMM can optionally use a
separate SCSI buffer for fixed disk accesses. This parameter specifies the
size of this buffer. The larger the buffer, the better the disk performance,
at the expense of conventional memory use.
O DMA=xxx, (DM), specifies the length of the maximum DMA transfer
that that can performed. xxx must be in the range 12 to 128, repre-
senting a maximum length of 12K to 128K.
O HANDLES=xxx, (HA), specifies the number of handles and names avail-
able. xxx must be in the range 16 to 255. Each application which uses ex-
panded memory requires at least one handle. Some applications require
extra handles. The default is 64 which should be adequate for most pur-
poses. Larger values increase the amount of extended memory used by
QEMM. Each HANDLE requires 28 bytes of extended memory.
O IGNOREA20, (IA), does not trap the 8042. By default, QEMM.SYS traps
the 8042 ports for the purpose of detecting programs which attempt to
manipulate the state of the A20 line. Programs do this to access ex-
tended memory. However, sometimes keyboard problems arise as a
result. The IA instruction disables support of HIMEM.SYS, but it may
serve to remove some keyboard-related problems as a trade-off. QEMM-
386 supports XMS, and so there is no good reason to load HIMEM.SYS.
O MAPS=xxx, (MA), specifies the number of alternate maps which are
available. xxx must be in the range O to 255. Each map uses 4K of ex-
tended memory. Alternate maps are used by operating environments to
speed up multitasking. There should be one more map specified as
programs you wish to run concurrently. The default value is 8. If you
do not run a multitasker, you can set MAPS=O.
O NOCOMPAQFEATURES, (NCF), disables use of EGAROM,
HALFROM, and ROMMEMORY on a Compaq computer. If QEMM
detects a Compaq computer, it turns on all three Compaq parameters
(COMPAQEGAROM, COMPAQHALFROM, and COMPAQROM-
MEMORY). You can turn them all off by specifying NOCOMPAQFEA-
TURES. After turning all features off, you may turn each on separately.
18 CHAPTER 3: THE QEMM.SYS PROGRAM
O NOFILL, (NO), specifies that QEMM.SYS should not fill conventional
memory below 640K. This option is only meaningful if your machine
has less than 640K of convcntional memory. If it docs, QEMM normally
fills in this missing memory, up to 640K from extended memory.
NOFILL specifies not to do this. If QEMM fills conventional memory,
the initial state ON is forced and cannot be overridden. NOFILL also
prevents video filling (see NOVIDEOFILL).
O NOHMA instructs QEMM to consider the HMA already allocated. If
there is an XMS driver loaded before QEMM and the HMA is already al-
located, you should use this switch or NOXMS.
O NOROM, (NR), doesn't map the reboot page of thc system ROM.
Often QEMM normally maps one 4K page of the systcm ROM in order
to detect reboots. QEMM.SYS can detect re-boots without this proccss.
In this case, you may specify NOROM and save 4K of memory.
O NOROMHOLES, (NRH), disables QEMM's automatic detc ction of
ROM holes, or unused addresses in ROM. Many system ROM chips
which are addressed betwecn FOOO and FFFF have large unused areas.
QEMM.SYS automatically detects unused areas and includes thcm.
However, sometimes QEMM.SYS's auto-detection does not work, due to
some areas that are initially unused but arc used later. If you experience
problems where the system functions properly at first, and then has
problems later, use this instruction and thell check the areas specified by
the QEMM.COM ANALYSIS report.
O NOSHADOWRAM, (NOSH), doesn't use Shadow RAM. PCs with the
Chips & Technologies 386 chip set or NEAT chip set put the 384K of
reserved memory in low memory with an 1/0 port-sclcctable mcthod
of getting at some of it. QEMM automatically detcrmines if your PC has
this capability. If it does not work, it may be that the NOSH paramcter
iS necessary.
O NOSORT, (NS), specifies that memory should not be sortcd by speed.
QEMM normally tests the speed of all conventional memory and all
available extended memory, and uscs the fastc st memory first. Using
NOSORT forces QEMM to usc the memory in the order it finds it. The
sorted memory is used to replacc the initial 64()K convclltic)nal mcmory,
QEMM code and page tables, fill the vidco area, ROM mapping, RAM
filling and expanded memory. QEMM gcts its memory starting from the
highest memory address possible for the amount specified in MEMORY
(with a default of all). If convl~ntional mcmory is remapped into faster
memory, the initial state ON is forced and cannot be overridden.
O NOTOPMEMORY, (NT), doesn't look for top mcmory. Some PCs put
384K of memory just below the top of the 16 megabyte address space
(384K below). QEMM.SYS automatically looks thcre to dc termine if
19 CHAPTER 3: THE QEMM.SYS PROCRAM
there is any memory. If there is memory, QEMM.SYS will make it avail-
able for use. Sometimes a conflict occurs when QEMM.SYS looks at tht
top of the memory spacc, perhaps becausc sometl~ g is already using
that area or memory, or perhaps becausc the hardwarc design of thc
computer does not like having softwarc attempt to acccss this arcas. In
these cases, NT instructs QEMM.SYS to not usc (or look for) any
memory at the top of the memory spact~. If your computer hallgs whe
it boots, use the NT instmction.
O NOVIDEOFILL, (NV), specifies that the memory arca from A()OO to
B7FF is not to be filled with memory. This option is only mt~aningful on
monochrome and CGA l'Cs. On thcse systems QEMM will add
memory from 640K (AO()O) to the bottom of the video adaptcr card
(either BOOO for monochromc or B8()() for CGA) alld adjust thc memory
size of DOS accordingly.
O NOXBDA, (NX), specifies that QEMM should not movc thc cxtended
BIOS data area. On machines that havc onc, QEMM.SYS automatically
moves the eXtended BIOS Data Arca (XBDA), whicll is normally at
639K, into the addresses used by QEMM.SYS. QEMM.SYS docs this be-
cause the XBDA presents an obstacle to propcr memory managcmellt. It
is possible, however, that a program would (crroneously) assumt~ that
the XBDA is at 639K. When this occurs, the NX instruction disablcs this
feature. If a program whicll is running on a PS/2 model 80 or othtr l'C
with an XBDA, encountcrs difficulty, the NX instruction may remcdy
the difficulty.
U NOXMS instructs QEMM not to be an extended mcmory managcr. Nor-
mally QEMM provides extended memory specificatioll (XMS) servicts.
O OLDDV, (ODV), spccifies that QEMM should bc compatiblc with
DESQview 1.3 and 2.()(). This results in QEMM USillg 4K to 8K morc Coll-
ventional memory. DESQview 2.01 alld above do not rcqUire this
parameter.
O TASKS=, (TA), sets the number of interllal QEMM.SYS data structurcs,
used when QEMM.SYS handlts interrupts out of protcctcd modc. Thcrc
are 16 TASKS by default. Each TASK requircs ~84 bytcs of cxtellded
memory.
O UNUSUAL8042, (U8), specifies that the computer has a ''noll-stalldard
8042 keyboard controller. If setting QEMM.SYS to ON or m~ g
DESQview disables the kcyboard thell the UNUSUAL8042 switch
should be specified.
O UNUSUALEXT, (UX), tells QEMM that tht~ metllod of determinill~ tht
amount of extended memory is noll-stalldard. If QEMM hall~s at boot
time, this switch could htlp. This switch sometimt~s makcs
QEMM.COM's Memory report on cxtcndcd mcmory inaccuratc.
20 CHAPTER 3: THE QEMM.SYS PROGRAM
This chapter describes the features of the QEMM.COM program. The pro-
gram has two purposes. You use QEMM.COM to change the modc (state) of
QEMM to ON, OFF or AUTO. You also use QEMM.COM to report status in-
formation about QEMM and report information about your first megabytc of
memory. QEMM.COM displays first meg information in cither map or list
format. The information displayed by QEMM.COM is the same as that dis-
played by Quarterdeck's Manifest program for the QEMM-386 catcgory.
QEMM.COM commands consist of QEMM followed by a command linc
parameter. If the command line parameter has a long name, you can cnter
an abbreviation instead of the name. This abbreviation is shown in parcn-
theses following the parameter name.
There are two command line paramcters that givc you assistancc:
O ? Iists all the namcs and abbreviations of all QEMM.COM command
line parameters.
Help displays the namc and a one linc description about each parameter.
To enter these commands:
∙ Type QEMM ? and press ~, or
∙ Type QEMM HELP and press ~
The information requested is displayed on the screen.
Two command line paramctcrs control messages displayed after a
QEMM.COM command is entered. These are:
O NOPAUSEONERROR (NOPE) instructs QEMM.COM not to display
the message, "Press any key to continue, ESC to abort". This message is
normally displayed when you enter a wrong QEMM.COM command
line parameter.
U PAUSE instructs QEMM.COM to pause for a key before execllting a
command. It also may be uscd to prevent information from scrolling off
the display.
One command linc parameter controls how QEMM.COM's reports are dis-
played on the screen:
ll MAP instructs QEMM.COM to display its report in a map format.
This command line parameter is a modificr and should be added to thc
QEMM.COM command line when necded. For example, to display the
QEMM.COM Access report as a map:
∙Type QEMM ACCESSED MAP and press ~.
The default format instructs QEMM.COM to display its reports as a list.
21 CHAPTER 4: THE QEMM.COM PROGRAM
QEMM-386 watches what memory is accessed by programs--so that
QEMM.COM can at any time display a report about what high memory has
been accessed and what has not been. QEMM.COM also can make an
analysis as to what additional memory you can use to load TSR's, drivers,
and DOS resources in high memory.
To give you control over when QEMM.COM begins watching high memory
to determine what memory is accessed, QEMM.COM has a command line
parameter called RESET.
O RESET resets the state of memory to unaccessed.
RESET is useful to use before running a program, so that you can determine
which areas of high memory are accessed by a specific program.
I~S There may be times when you wish to change the current mode of QEMM.
The current mode controls whether QEMM puts the system into virtual 8086
mode and how expanded memory should be handled. You can set the cur-
rent mode to AUTO, ON, or OFF.
O AUTO (AU) specifies that QEMM should turn ON when a program
needs expanded memory.
O ON specifies that expanded memory is available and the processor is in
virtual 8086 mode.
O OFF specifices that expanded memory is not available and the processor
is in real mode.
The mode forces ON when conventional or video memory is filled, high
RAM or ROMs are mapped, conventional memory is sorted, or some ex-
panded memory is in use.
To change the current mode to ON:
∙Type QEMM ON and press ~
The mode is then changed. You can change the mode to OFF or AUTO in the
same way you changed the mode to ON.
22 CHAPTER 4: THE QEMM.COM PROGRAM
The two LOADHI programs, (LOADHI.COM and LOADHI.SYS) enable you
to load TSRs, drivers, and DOS resources into available regions of high RAM.
Your high memory is transformed into higll RAM by QEMM.SYS's RAM
parameter. If you have run the Optimize program this has been done for you.
Check your CONFIG.SYS file for the QEMM statement and be sure the RAM
parameter is present. If not, refer to Chapter 3 page 13.
This chapter explains how and when the LOADHI programs may be used,
and describes the command line switches available. These switches help you
determine and modify the effectiveness of LOADHI in freeing up convention-
al memory. Freeing up this memory may enable you to:
O run programs that would not fit in memory before,
O add TSRs you've been doing without,
O speed up memory-starved programs that no longer need to go to disk for
their data,
O add DOS resources to improve system response time and program effec-
tiveness, and
O increase the memory available to applications running in DESQview.
The LOADHI programs are very effective with or without customization by
you. However, it is important to note that if LOADI 11 is unable to make use of
high RAM for a particular program or a DOS resource, it will use convention-
al memory instead. Thus, your programs and DOS resources are available for
use whether they were relocated or not.
In order to use these two programs effectively, you need high RAM. Tn this
chapter, it is assumed that QEMM has mapped available memory addresses
with memory. If this is not the case, you may wish to install and setup QEMM
as described in Chapter 2, Installation.
Both LOADHI.SYS and LOADHI.COM load programs into high RAM. You
use LOADHI.SYS to load device drivers with an appropriate DEVICE= state-
ment in your CONFIG.SYS file. You use LOADHI.COM to load programs
either from COMMAND.COM'S command line or from within your
AUTOEXEC.BAT file. Both LOADHI programs support the same set of com-
mand line options (switches) which let you alter the way LOADHI normally
allocates and uses high RAM. These switches are described more fully on
page 34, LOADHI Options.
In addition, LOADHI.COM can be executed from the command line at any
time to give you a listing of your current usage of high RAM. The following
section describes this listing. It defines key terminology used in this chapter.
And it is also the starting point for you, if and when you need to employ
LOADHl's command line options.
29 CHAPTER 5: THE LOADHI PROGRAMS
You display the LOADHI report by running LOADHI from the command
line without specifying any command line option or program file to load:
∙Type LOADHI and press ~J.
The LOADHI report, shown below, describes what higll RAM is in use and
still available, the amount of high RAM used, and the names of the
programs or DOS resources using the memory. It also shows you the
memory address range in use by each block withill a region.
As described in Chapter 2, QEMM locates and maps high memory areas into
high RAM. These memory areas may be scattered throughout the high
memory area due to the presence of BIOS and system ROM and RAM
memory already in use by peripheral adapters. Each contiguous area of
memory converted into high RAM is referred to as a region. Each region is
given a number. Memory is allocated from a region in blocks. These regions
may vary in size. Each time you load something into high RAM, LOADHI al-
locates a block of memory from one of these regions. That block shows up in
the list for that region and the region's available size and memory area is
reduced accordingly.
However often you call upon LOADHI to populate high RAM, there will
never be more or less regions available (barring a fundamental change in
your hardware, such as adding or rcmoving a peripheral adapter card). The
number of blocks listed for a given region will, however, increase as LOAD-
Hl uses this memory.
If you display the LOADHI report before you have loaded TSR's or drivers
in high RAM, you can see the number of regions found and mapped, the
high memory address ranges, and the size of each region. Each region is
marked as Available in the status column. This report serves as an excellent
baseline for planning the best use of high RAM. The sum total of the regions'
sizes gives you the upper limit to the conventional memory that can be
saved by using LOADHI.
C)loadhi
Region ~rea Size Status
8000 E00~ 0.1K llsed ~IPX)
E007 E0hC Z.8K Used (FILES)
E0EE E4~F ISK Used ()PX)
E4E0 ~ E7FZ l3K 60~J l~hle
Z C534 -- C53~ 0 IK Used (llOUSE)
Z C53E C6~ 4 8K IJsed (8UFFEES)
Z C8E7 ~ JZZ6 9377K Used (nOlJSE)
30 CHAPTER 5: THE LOADHI PROGRAMS
You use the LOADHIISYS program when you want to load a device driver
into high RAM. Device drivers are essentially extensions to DOS which DOS
will load on system startup as it processes your CON FIG.SYS file.
Any statement in your CONFIG.SYS file which begins witll the keyword
DEVICE= instructs DOS to load the device driver which is specified following
that keyword. Some common devices are memory managers, add-on
peripheral device drivers, such as a disk drive or a mouse, and extensions to
existing devices, such as the ANSI.SYS driver supplied with DOS that some
programs use to address the video display.
With the exception of QEMM.SYS, which LOADHI relies upon, any device
driver that you currently use or anticipate using in the future is a candidate to
consider loading into high RAM. Occasionally you may find a device driver
that is sensitive to its location in memory and which will not work properly, if
at all, when relocated. Other device drivers may require that you experiment
with the customization capabilities of LOADHI. However, for the most part
you will encounter little difficulty in using LOADHI.SYS with your device
drlvers.
Since ANSI.SYS is available on every DOS system, vve use it in the example
below to show how you take advantage of LOADHI.SYS In this example, the
sample CONFIG.SYS file has a statement which loads QEMM.SYS, as well as
the following statement loading ANSI.SYS:
DEVICE=C:\DOS\ANSI.SYS
This statement instructs DOS to load the file ANSI.SYS which can be found itl
the DOS subdirectory of disk drive C.
To load ANSI.SYS in high memory, you must instruct DOS to load the file
LOADHI.SYS instead of ANSI.SYS. L.OADHI will take care of loading the
ANSI.SYS file. You do this by modifying the CONFIG.SYS statement so that it
reads:
DEVICE=C:\QEMM\LOADHI.SYS C:\DOS\ANSI.SYS
NOTE: Editing an existing DEVICE= statement simply displaces the device
driver specification on the statement line. If thc devicc driver you want to relo-
cate takes command line switches of its own (the example ANSl.SYS has
none), and you make use of any of these options, they should be retained in
the edited statement also.
This easy modification to your CONFIG.SYS file represellts the simplest way
to take advantage of LOADI lI's features. For many systems, this will be c~de-
quate. When you need more control over the placement of device drivers or
encounter difficulty in relocating a device driver, you should see the LOADHI
switches section of this chapter.
31 CHAPTER 5: THE LOADHI PROCRAMS
You use LOADHI.COM to load TSR (Terminate and Stay Residtnt) programs
in high memory or to relocate DOS resources (such as disk buffers and file
handles) to high memory. The TSRs you customarilv use are probably foulld
in your AUTOEXEC.BAT file. DOS resources arc allocated, if at all, from your
CONFIG.SYS file. Other TSRs which you use only occassionally may be
loaded directly from the DOS prompt (or by way of a batcll file).
This section first explains how to use LOADHI.COM to load your TSRs into
high RAM. It then briefly describes how you may use LOADHI.COM in Coll-
junction with QEMM-386's programs (BUFFERS.COM, FILES.COM, etc.) thclt
place DOS resources in high RAM. Since these programs also perforlll other
functions, they are more fully described in Chapter 6, The DOS Rcsource
Programs.
In describing how to use LOADHI.COM, we usc, as an exalllple TSR, a pro-
gram called DOITALL. This imaginary program resides in a disk directory
called UTILS and has several command line options whicll modify its be-
havior. Our example shows two of these options: thc /m option to force the
program to display in monochrome and the /r option wllicll instructs it to
stay resident (it has a stand-alolle mode) and available to be "popped up" on
demand. To run DOITALL, the following statemellt nec~ls to be executtd:
C:\UTILS\DOITALL /m Ir
This statement could be present in your AUTOEXEC.~AT file, in some other
batch file you execute as needed, or a statement you ellter from the DOS
prompt whenever you want the program in memory. To mll DOITALII out of
high RAM, the above statement nceds to be change-l so thLlt it executt s LOAD-
HI first:
C:\QEMM\LOADHI C:\UTILS\DOITALL /m Ir
Notice that the statement that executed the program is now a parameter to tlle
program LOADHI. All that we have done is insert the drivc and directory
path for LOADHI and made LOADtll the program to be loaded. LOAL I 11 in
turn loads and executes DOITALL in higll RAM. DOITAI..I. still sees its
parameters when it initiali~es. In many cases this simple cllange to your sys-
tem is sufficient to free up a significant amount of melllory an-l still elljoy the
benefits of your TSR programs.
There are also several programs included with QEMM~ wllicll are meallt to
be used in conjunction with LOADHI.COM. Thtse progrLlms ar- I
BUFFERS.COM, FILES.COM, FCBS.COM and LASTDRIVE.COM. As their ~l
names suggest, they allow you to allocate and use the associate(l DOS resour-
ces out of high RAM. If your CONFIG.SYS file is currelltly allocatillg any of
these resources, the use of LOADHI and these utilities frees up IllUCIl of the
conventional memory now devoted to them.
Each of these programs allocate memory before they ter~ ate. If thev are in
high RAM, the memory they allocate comes from higll RAM. Altho~lgll th-~s~
32 CHAPTER 5: THE LOADI!I PROGRAMS
programs are fully described in the Chapter 6, The DOS Resource l'rograms, a
typical example of the use of each one with LOADHI should give you an idea
about their use. These examples do omit the details about the disk and sub-
directory location of the programs.
Example l-Allocate buffers in high memory:
Before LOADHI.COM:
CONFIG.SYS file: BUFFERS=20
AUTOEXEC.BAT file:
After LOADHI.COM:
CONFIG.SYS file: BUFFERS=l
AUTOEXEC.BAT file: LOADHI BUFFERS=20
Example 2-Add 10 file handles:
Before LOADHI.COM:
CONFIG.SYS file: FILES=20
AUTOEXEC.BAT file:
After LOADHI.COM:
CONFIG.SYS file: FILES=10
AUTOEXEC.BAT file: LOADHI FILES +10
Example 3-LoadFCBS in high memory:
Before LOADHI.COM:
CONFIG.SYS file: FCB5=8,2
AUTOEXEC.BAT file:
After LOADHI.COM:
CONFIG.SYS file: FCB5=1,0
AUTOEXEC.BAT file: LOADHI FCB5=8,2
Example 4-Increase last drive to include drive letter G:
Before LOADHI.COM:
CONFIG.SYS file: LASTDRIVE=G
AUTOEXEC.BAT file:
After LOADHI.COM:
CONFIG.SYS file: LASTDRIVE=D
AUTOEXEC.BAT file: LASTDRIVE=G
33 CHAPTER 5: THE LOADHI PROCRAMS
s There are several command line options for LOADHI which can help you
make better use of your high RAM if you find that the simple, straightforward
approach is inadequate.
The command line options may help if you have trouble loading one or more
of your programs into high RAM. Some command line options are to be used
if you have more candidates for high RAM than seem to fit. Another com-
mand line option lets you specify a particular region to use or exclude. There
is an option that will allow you to find out how much memory a program real-
ly needs, when that isn't clear either from the program documentation, or
from a guess-timate based on its file size.
The LOADHI command line has the following format:
LOADHI [loadhi-opts] target-program [target-program-opts]
The brackets in the statement indicate that the item specified is optional. The
target program represents the device driver or other program you are loading.
The last item shows the placement of options for the target program if there
are any.
Now that we know where LOADHl's options belong on the command line,
we also need to know what an option looks like.
O A LOADHI option always begins with a slash (/).
O Following the slash is the option name, or its abbreviation.
O If the option can take a value, then the next character must be a colon (:)
followed by the value.
One LOADHI option is LARGEST, which optionally can take a value. You can
indicate this option in any of the following ways:
/ LARGEST
/L
/LARGEST:2
/ L:2
In all, there are thirteen options you may specify on a LOADHI command
line, each of which are described below. Combinations of two or more options
may be specified to give you greater control over the use of high RAM. These
paragraphs show: the full option name followed by its abbreviation. If a value
is called for that is optional it is enclosed in square brackets ([ ]). The options
are:
O /BESTFIT or /B instructs LOADHI to use the smallest block of memory in
which the program fits. Using BESTFIT tends to reserve larger regions for
your larger programs. See also SIZE and GETSIZE.
U /HAPPIEST or /H instructs LOADHI to use the smallest block of memory
in which the program will fit, provided that it does not terminate with an
34 CHAPTER 5: THE LOADHI PROGRAMS
error. Both device drivers and TSRs return after they are initialized, and
the LOADHI programs can determine if the load was successful. It it was
not, then LOADHI will try again with the a larger area until the program
exits successfully. If necessary the program will be loaded in conventional
memory.
O /REGION:n or /R:n instructs LOADHI to load the program into the
region numbered "n".
O /LARGEST[:n] or /L[:nl instructs LOADHI to load the program into the
largest region or one particular region out of several large regions avail-
able. The number indicated by n indicates which of these to use. For in-
stance the option /L:2 specifies the second largest region.
O /SMALLEST[:n] or /S[:n] instructs LOADHI to load the program into the
smallest region or one particular region out of several small regions avail-
able. The number indicated by n indicates which of these to use. For in-
stance the option /S:2 specifies the second smallest region.
O /EXCLUDEREGION:n or /XR:n instructs LOADHI to not use region num-
ber n to load the target program.
O /EXCLUDELARGEST[:n] or /XLl:nl instructs LOADHI to not use the
largest region (or the Nth largest region) to load the target program.
O /EXCLUDESMALLEST[:n] or /XSl:n] instructs LOADHI to not use the
smallest region (or the Nth smallest region) to load the target program.
O /GETSIZE[:f] or /GS[:f] allows you to determine precisely the amount of
memory a program requires. With this option LOADHI loads the program
you specify and reports two memory usage values. The first value tells
you how much memory (in bytes) the program required to load and ini-
tialize. The second value tells you the amount of memory the program
has permanently retained for its own use. You use this option to help you
custom fit your device drivers and TSRs into high RAM.
The optional value f should be a file name. When a file name is present,
LOADHI writes the program name and the two size values into this file
so that you may examine it later. If the file name you specify already ex-
ists, LOADHI appends the information to this file. By systematically using
the GETSIZE option with a file name you can compile the memory re-
quirements of all the programs you wish to relocate to high RAM. This is
the procedure that the Optimize program uses.
NOTE to DESQview users: LOADHI /GETSIZE can be used to help you
determine how much memory a program requires to run, so you can
properly set an appropriate memory size. Simply run the program you are
interested in in a maximum memory window with LOADHI /GS. Do
what you would normally do in the program. When you exit it, LOADI 11
displays the amount of memory that the program used. That number (in-
35 CHAPTER 5: THE LOADHI PROGRAMS
creased slightly) can be used for the memory configuration for that pro-
gram.
Cl /SIZE:nnnn or /SIZE:nnnnK instructs LOADHI to allocate from a block
that will best fit the value nnnn. This number can be expressed in bytes
(i.e 4096) or in kilobytes (i.e. 4K). The number you supply may come from
the report issued by the GETSIZE option, or a number that you have
determined by other means. In either case this number must represent the
amount of memory the program nceds to successfully initialize.
O /NOLO or /NL instructs LOADHI to not load the specified program at all
if it will not fit in a high RAM region. This allows you to specify addition-
al drivers, TSRs or DOS resources, that you would like to use, but only if
they will be placed in high RAM
O /LO or /LO instructs LOADHI to unconditionally use conventional
memory instead of high RAM. You can use this option to temporarily
change LOADHI statements in CONFIG.SYS or AUTOEXEC.BAT files
without removing them completely.
O /TERMINATERESIDENT or /TSR instructs LOADHI to terminate as a
TSR, leaving a small stub of code (about 100 bytes) resident. This option is
only useful if you are using LOADHI in combination with DOS 4's IN-
STALL command in CONFIG.SYS. In this case, the effect of this option is
simply to suppress an error message issued by DOS indicating a failure to
load a TSR when in fact LOADHI successfully relocated the program.
Finally, as a quick reminder, LOADHI will also respond to the following op-
tions on its command line:
:0 /NOPAUSEONERROR or NOPE instructs LOADI 11 not to pause on error.
O /PAUSE instructs LOADHI to pause while parsing commallds.
O /HELP displays the LOADHI help scree
1_1 /? Iists all LOADHI command svvitclles.
36 CHAPTER ~: THE LOADHI PROGRAMS
The DOS Resource Programs let you manage the data structures used by
DOS. You may use thesc programs by tllemselves, either to determine the cur-
rent memory used or to add resources out of conventional memory. Their use
with the LOADHI programs will benefit you the most.
DOS always allocates memory for each resource. The amount allocated varies
according to the DOS version. Earlier versions of DOS do not have support for
some of the resources. Users increase the memory for a resource by including
a statement in their CONFIG.SYS file. DOS reads and processes this file
during its boot sequence.
This chapter discusses each of the DOS resource allocation programs. Each
DOS resource is described briefly. Changes or additions to your CONFIG.SYS
and AUTOEXEC.BAT files are given where needed. This information should
also help those of you who are taking advantage of increasing these DOS
resources for the first time.
The programs described in this chapter are all used in mucll the same way.
Running the program without any parameters gives you a report on the cur-
rent memory allocation for the resource. All programs accept a numeric
parameter which increases the memory available to DOS for that resource.
And each allocates this additional memory from high RAM when you use
LOADHI.
To use high RAM effectively, you c11ange CONFIG.SYS to reduce the memory
allocation. You then c~lange AUTOEXEC.BAT to increase the resource.
The parameters these programs use share a common syntax. A number, or a
number preceded by an equals sign (nn or =nn), gives the total number of
data structures needed. A number preceded by a plus sign (+nn), adds that
many more structures. All the programs add memory; you cannot use them to
reduce the memory allocated to a resource.
The DOS buffers resource can improve disk 1/0 response times. DOS always
has some number of disk sector buffers allocated. The default number varies,
according to the version of DOS, from 2 to 15 buffers. You can add more buf-
fers with a statement in your CONFIG.SYS file. For example, the statement,
BUFFERS=30, allocates space for a total of thirty sector buffers. Each sector
buffer requires 528 bytes of memory.
NOTE: Don't use BUFFERS.COM in DOS 4.0 systems. The structure of the
disk buffers is different.
Without the services of BUFFERS with LOADHI, buffers are allocated out of
conventional memory. Adding buffers can improve program response time
but reduces the memory available to your application.s. Also, one application
may benefit from sector buffering while another is unaffected. Much depends
upon how they access the files they use. Having your disk buffers allocated
out of high RAM can, therefore, keep the benefits of disk buffering and avoid
the associated penalty.
37 CHAPTER 6: THE DOS RESOURCE PROGRAMS
You can display a report of the number of buffers now allocated:
∙Type BUFFERS and press ~.
The prograrn responds by reporting " BUFFERS=30 now".
To load 30 buffers in High RAM:
∙Type LOADHI BUFFERS +30 and press ~.
The program responds by reporting:
BUFFERS=30 before
30 buffers added
BUFFERS=60 now
If you have a BUFFERS=statement in your CONFIG.SYS file, we recommend
loading your buffers in high memory. Let's assume for our example that you
have previously determined that you require 40 disk buffers, so CONFIG.SYS
file now contains the statement, BUFFERS=40. To load these in high memory:
∙ First change the BUFFERS statement in your CONFIG.SYS to
BUFFERS=1.
This specifies a small number of buffers to override any default DOS alloca-
tion. If you simply remove this statement from CONFIG.SYS you may end up
with as many as fifteen disk buffers allocated out of conventional memory.
∙ Next change your AUTOEXEC.BAT file so the first statement is
LOADHI BUFFERS=40 or +39.
NOTE: Make it the first statement so other AUTOEXEC.BAT statements can
take advantage of disk buffering.
DOS uses the files resource to keep track of disk files while they are open. The
files resource is a data structure requiring about 53 bytes for each open file.
This data structure is closely related to a DOS file handle, so that term is used
here.
The default number of file handles DOS allocates is small and seldom enough.
Many of the larger applications require more. A program such as DESQview,
which allows multiple programs to be running concurrently, requires at least
this much. Depending on the active applications, DESQview may require even
more. It is quite likely that you already have a FILES= statement in your CON-
FIG.SYS file. FILES=20 is a common setting.
You can display a report of the number of files now allocated:
∙Type FILES and press ~.
The program responds by reporting "FILES=20 now".
To add 20 files in high memory:
3X CHAPTER 6: THE DOS RESOURCE PROGRAMS
∙Type LOADHI FILES +20 and press
The program responds by reporting:
FILES=20 before
20 files added
FILE5=40 now
Whether you do or do not currelltly have a FILES= statcmellt in your
CONFIG.SYS file, we recommend loading files in higll memory Let's aSSUllle
for our example that you have previously determined that you require 3() files,
so your CONFIG.SYS file now contaills the statemellt, Fll ES=30. To load
FILES in high memory:
∙Change the FILES statement in your CONFIG.SYS file to FILES=10.
This statement allocates 10 file handles. This numbcr puts only a small burden
on the use of conventional memory, while avoiding problems with certain ap-
plications.
∙Add the statement, LOADHI FILES=40 in your AUTOEXEC.BAT file.
DOS uses the FCB resource to keep track of File Control Blocks (FCBs). Ver-
sions of DOS prior to DOS 2.0 used FCBs exclusively to open and manage
open disk files. Since DOS 2.0, the preferred method of filc access involves the
use of file handles. Because many programs written before DOS 2.0 are still in
use, the use of FCBs is still supported.
Skip this section if you are not using Sl-lARE alld do not have an FCBS state-
ment in your CONFIG.SYS file. Also, this resource is not available in DOS ver-
sion 2 systems.
The FCB management by DOS involves two numbers. The first number in-
structs DOS to allocate memory for that many FCBs. The second number indi-
cates how many of those FCBs should be protected when DOS needs to close
an open FCB. Each FCB resource allocated requires about 53 bytes.
NOTE: The FCB resource uses contiguous memory. When you add FCBs, a
new block of memory for the entire table must be allocated. The memory used
by the original table is not recovered.
You can display a report of the number of files now allocated:
∙Type FCBS and press ~.
The program responds by reporting "FCBS=4,0 now".
To add to add 4 more FCBs, with 2 additional FCBs protected.
∙Type LOADHI FCBS +4~2 and press ~.
The program responds by reporting:
39 CHAPTER 6: THE DOS RESOURCE PROGRAMS
FCBS=4,0 before
4 FCBs added
2 protected FCBs added
FCBS=8,2 now
If you currently have a FCBS= statement in your CONE11G.SYS file, we reco~
mend loading FCBS in high memory. Let's assume for our example that you
have previously determined that you require ~,2 FCBS, so your CONFIC..SYS
file now contains the statement, FCBS=8,2. To load FCBS in l-igh memory: I
∙ Remove the FCBS= statement in your CONFIG.SYS
∙ Add the statement, LOADHI FCBS 8,2, to your AUTOEXEC.BAT file.
DOS uses the last drive resource to support both physical alld logical disk
drives. Logical disk drives are useful if you use the vos SUBST program.
Each drive entry in DOS' drive tablc requires about S(~ bytes.
You can add drive table support using the numerical par~lmeters you'rt~ Seell
throughout this section or you can set it using a drive letter.
NOTE: The DOS drive table uses contiguous memory. Whell you add more
drives, a new block of memory for the entire tablc m~lst be allocated. The
memory used for the original drive table is not recovered.
You can display a report of the number of files no~ allocated:
∙Type LASTDRIVE and press ~.
The program responds by reporting:
LASTDRIVE=E now
To load a new drive table in high RAM:
∙Type LOADHI LASTDRIVE G and press ~.
The program responds by reporting:
LASTDRIVE=E before
2 drives added
LASTDRIVE=G now
We recommend that you change your LASTDRIVE= st~temellt in CON-
FIG.SYS so only your actual disk volumes are specified (For example,
LASTDRIVE=D). If your hard disk is partitioned, tht~ drivt~ letter should cor-
respond to the last partition. This minimizes tht~ "lost" melllory. Tht~ll load lo~i-
cal drives in high memory. For example to add three loxicLll drives:
∙Add the statement, LOADHI LASTDRIVE=+3, to your AUTOEXEC.BAT file.
40 CHAPTER 6: THE DOS RESOURCE PRoGRAM~
The VIDRAM.COM program extends the conventional memory managed by
DOS by 96K if your system has an EGA or VCA video adapter card. Your rc
must also already have a full 640K of conventional memory alld the program
or programs you intend to execute with this additional memory must not ~ISe
graphics while VIDRAM is enabled. In othcr words, VIDRAM Call be of use
to you if you make use of large text based programs, such as dBASE IV, that
will be more responsive in a 736K machille.
VIDRAM is a standalone TSR. It does not need any expallded memory, ex-
tended memory or a memory manager (other than itsclf and DOS). If your
system has the necessary video RAM, VIDRAM will work equally well 011
8088, 8086, 80286 and 80386 machincs. If you do have additional memory alld
a memory manager that can make this memory available to you, VIDRAM
may not be useful to you.
VIDRAM steals the video memory from the adapter KAM tl-at is used for
graphic pages. This memory is av~ilablc on ECA and VGA adapters, (not on
CGA or monochrome adapters) and lies just bcyond the ~4()K address bound-
ary. VIDRAM makes this memory available to DOS. DOS in turn will m~lke
the memory available to every program it loads. VIDRAM also intercepts
video requests and refuses all requests that would make use of this memory~
i.e. graphics operations.
If you routinely use both large text based programs and graphics programs,
you can turn the VIDRAM feature off and on as needed after you exit one pro-
gram and before you execute the other. (NOTE: VIDRAM canllot be turlled
on and off inside DESQview).
If you seldom use graphics programs you can mak- the best use of VIDRAM
if you simply load it into memory and turll it ON every time you power Up
your machine. To do this you need to create or modify your AUTOEXEC.BAT
file, adding the statement:
VIDRAM ON
This brings VIDRAM into memory and makes the additiollal 9(~K of melllory
available to all of the applications you may run througllout the day.
The ON parameter on the command line is all option. VIDRAM hcls severlll
options which it will recogni7.e, including the options whicll all the prograllls
in the QEMM package support. In this sectioll, wllell all option is first Illell-
tioned, the alternate abbreviated form of th.' option will immediately follow it
and is enclosed in parantheses.
You will need to understand what these options do if:
l~ you want to know the status of VIDRAM
:~ you need to run graphics programs occassionally
CHAPTER 7: THE VIDRAM PRo(,RAM
1~ you have a second video adapter and monitor
O you also have expanded or extended memory and a memory
manager that also is managing the video RAM memory area
To determine the current status of VIDRAM, you need to enter just the
VIDRAM command (no option) from the DOS prompt:
∙TYPE VIDRAM and press ~.
The VIDRAM program reports whether or not VIDRAM is resident and
enabled. For example, when VIDRAM is not resident, it reports:
NOT Resident - Graphics enabled
If VIDRAM is resident and turned on, then the following is displayed:
Memory Extended to B800 - Graphics Disabled
This shows you that DOS will see the additional 96K of memory (to
hexadecimal address B800) and reminds you that graphic capabilities are not
available.
To turn the VIDRAM function OFF (OF), and return the 96K of memory for
use by the graphics adapter, you would enter the following command from
the DOS prompt:
∙Type VIDRAM OFF and press ~.
The VIDRAM program will respond with a display which shows that
graphics are now enabled:
Memory NOT Extended - Graphics Enabled
There are two parameters you can use that inhibit graphics functions but
which do not extend your memory. You use these when you have a memory
manager that already is including this memory and you want to prevent
graphics programs from using the memory.
∙Type VIDRAM NOEGA and press ~.
to prevent EGA requests from being honored.
∙Type VIDRAM NOCGA and press ~.
to prevent a~y graphics function (CGA through VGA).
The last VIDRAM specific option is used to force the VIDRAM function ON
in situations where VIDRAM would normally refuse to appropriate the video
RAM memory. These situations occur when you have two monitors and two
video adapters in your system, or when all or part of the video RAM is al-
ready being managed by a resident memory manager.
42 CHAPTER 7: THE VIDRAM PROGRAM
This option is the OVERRIDE (OV or OR) option. It may not work well for
you in either of these situations, for it depends upon what adapters may be in-
volved or what memory management features you may already be using.
You will simply have to determine for yourself VlDRAM's utility in this situa-
tion.
To use the OVERRIDE option, you would enter the following command from
the DOS prompt:
∙Type VIDRAM ON OVERRIDE and press ~.
The VIDRAM program will respond with a display like the following ex-
ample, which shows that memory has been extended and that graphics are
now disabled.
Memory Extended to BOOO - Graphics Disabled
Notice also in this example, that VIDRAM has not made the entire 96K extent
of video RAM available. The example was taken on a system with both a
VGA and a monochrome video adapter present. Leaving enough video RAM
to support both monitors in their text modes, VIDRAM was able to extend
DOS' conventional memory by 64K (the memory from hexadecimal addresses
AOOO to BOOO).
Finally, as a quick reminder, VIDRAM will also respond to the following op-
tions on its command line:
1~ NOPAUSEONERROR (NOPE) tells VIDRAM to not pause on error.
[~ PAUSE tells VIDRAM to pause while parsing commands.
3 HELP displays the help screen for VIDRAM.
l~ ? Iists all commands.
You can use the LOADHI program (Chapter 5) with VIDRAM to make the
resident portion of VIDRAM remain in higll RAM. VIDRAM resident in high
RAM cannot, however, extend the memory To extend the mcmory, you must
run VIDRAM a second time. For example:
∙TYPE LOADHI VIDRAM ON and press
∙TYPE VIDRAM ON and press ~.
This allows the code that intercepts graphics requests to be in high RAM,
while the memory management portion is in memory only briefly while it ex-
tends or returns memory.
43 CHAPTER 7: THE VIDRAM PRoC,RAM
This chapter describes two othcr QEMM programs, EMS2EXT and EMS,
which give additional control over expanded mcmory. Thcsc two programs
can be used separately or thcy can bc used together to give you some
dynamic control over your cxtcnded memory allocation.
If your system has EMS 4.0 expanded mcmory, but not extclldcd memory,
you may want to use the EMS2EXT.SYS dcvicc driver supplicd with QEMM.
EMS2EXT can supply expanded memory as extcnded memory to programs
that access extcnded memory in a certain prcscribed ma~ cn Two SUCh
programs are IBM's DisplayWrite and thc VDISK.SYS RAM disk utility sup-
plied with DOS. Many disk cache utilities oftcn use extended mcmory in this
way also.
These and other programs can be used with EMS2EXT.SYS because they do
not require that extendcd memory (memory abovc 1024K) be physically
present, nor do they need to directly address this memory. They make
demands upon this memory in a logical as opposed to a physical sense. And
they access the contents of this memory througll request.s of a memory
manager, which makes this memory available to the program. Programs
which make use of extended memory in this way provide a performance
boost over programs that rely on disk storage alonc, since the in-mcmory
transfer is much faster.
Programs that expect extended memory to be physically prcsent cannot
make use of EMS2EXT. Quarterdeck's QEXT.SYS driver, uscd with
DESQview, cannot use memory supplied by EMS2EXT.
Because this logical or virtual memory capability cnhances a programs perfor-
mance, you should have little difficulty in detcrmining which of your applica-
tions support this memory. They will surely mention it. And, if your comple-
ment of expanded memory lends itself to this use, you will want to makc this
memory available to thesc programs.
If you decide to use EMS2EXT you may also want to consider the relative
speed of the various types of memory you have in your system. It is possible
for there to be a significant speed differential betwcen these types of memory.
EMS2EXT is capable of determining this difference and can allocate either
slow memory or fast memory for use as extended memory.
EMS2EXT is a device driver and therefore needs to be loaded when your sys-
tem boots up. This requires a DEVICE= statement in your CONFIG.SYS file.
When you have determined the amount of memory to ask EMS2EXT to
manage as extended memory, you need to modify CONFIC.SYS to load
EMS2EXT. The statement to load EMS2EXT must come after the one that
loads your expanded memory manager and looks likc:
DEVICE=C:\QEMM\EMS2EXT.SYS MEMORY=NNN SPEED
Several components of this statement need to be explaincd.
4S CHAPTER ~: OTHER QEMM-~6 PROCiRAMS
The nnn paramcter in MEMORY=nnn is the number of kilobytes of ex-
panded memory to allocate, i.e. MEMORY=512. This is optional.
The speed parameter is the optional specification for using faster or
slower mcmory for allocation. Lcave this part of the linc blank or use
either, FAST or SLOW.
The EMS programs providc a number of informativc and powerful func-
tions to help you make the best usc of your EMS 4.() expanded mcmory
where you might have special or unusual requircmcnts. Although anyonc
might bcnefit from the EMS summary status report and othcrs by seeing tht~
detail of expanded memory allocation, other uses of EMS whicll will be
described in these sections are for thc morc technically minded.
Most of the functions of the two EMS programs, EMS.SYS and EMS.COM,
involve the manipulation of expanded memory handles. An EMS handle is a
reference to a block of memory (~ero or more EMS pages) that the expanded
memory manager issues whcn it allocates memory. A handle is represented
by a number and it may be given a name.
An expandcd memory handle, its name, and the pages of memory as-
sociated with the handle are the fnndamental tokens of interaction between
an application program and an expanded memory manager. The two EMS
programs give you some of the same control functions availablc to
programs. The principal need for caution when using the EMS programs
arises because they give you access to handles which may belollg to other
programs and EMS will not prevent you from inadvertent mischief making.
With the EMS programs you can allocate and namc a block of memory with
the CREATE option, and specify that the memory be fast or slow mcmory.
You can free expanded memory pages allocated to a handlc with the FREE
option. You can read data from a file into allocated expanded memory or
write the data from allocated expanded memory to a file with the LOAD or
SAVE options. An EMS handle can be renamed, and the number of memory
pages can be changed.
Along with the report features of EMS you can experiment with the func-
tions using EMS as a command line interface to the expandcd memory
manager.
If parts of the expanded memory in your system runs at different speeds,
you can use EMS to pre-allocate memory of one speed before you load a
device driver or TSR so that it can only use the memory that rernains at thc
other speed; and you can then free the memory for use by your other ap-
plications. Manifest can show you if your memory runs at differellt rates.
Developer's using expanded mcmory may make use of the LOAD and
SAVE function to help them when they need to work with the same context
repeatedly during development and debugging.
46 CHAPTER ~: OTHER QEMM-~6 PROGRAMS
All of these uses of EMS require an cxtensive knowledge of the various
aspects of your system, from the details involved in thc DOS boot scqucnce,
to uses and capabilites of expandcd and extended memory as well as an Ull-
derstanding of the applications you are attempting to colltrol and optimii~.e.
Both EMS.SYS and EMS.COM respond to thc same commalld linc options.
You use EMS.SYS from within the CONFIG.SYS file to manipulatc expallded
memory during the system boot sequence. You use EMS.COM from within
the AUTOEXEC.BAT file at the end of the boot scquence or directly from
DOS prompt as needed.
Described below are the command line options of EMS alld the paramctcrs
required by each option. Some of the options havc an abbreviated form.
Where this is the case, the alternate form is shown immediately following
the option when it is first introduced, and is enclosed in parentheses.
To get a summary report of your expanded memory, you issue the EMS com-
mand from the command line without any option specified. EMS outputs
the following information.
O the total amount of expandcd memory, and
O the amount currently available, and
O the address of the Page Frame.
The DIR option displays, in tabular form, a breakdown of thc current ex-
panded memory allocated. For each allocated handle, the number of ex-
panded memory pages is given, the number of kilobytcs of memory thosc
pages represent, and the name assigned to that handle, if any.
The CREATE (CR) option is used to allocate pages of expanded mcmory. Tt
takes two parameters. CREATE requires that you providc a name for the
memory you are allocating and that you specify the amount of memory. The
name may be one to eight characters long. The name nccd not be enclosed in
quotation marks unless it contains blanks. The amount of memory you arc al-
locating may be expressed in EMS pages (16K per page) or in kilobytes. If
you specify the number of kilobytes, thc memory manager will round the
number up if necessary to determine the number of pages. Follow the EMS
CREATE command with EMS DIR command to confirm the allocation and
to determine the handle number assigned to the name.
The CREATEFAST (CFAST) and CREATESLOW (CSLOW) options are
forms of the CREATE option that also instruct the memory manager to allo-
cate the memory from either faster or slower memory. I]sc Manifest's
Memory Timings to determine if this form of CREATE is important to you.
The FREE option frees memory and deallocates a handle. FREE requires that
you specify the handle to deallocate--by its name or its number.
47 CHAPTER 8: OTHER QEMM-386 PROGRAMS
The RENAME (REN) option lets you assign a new name to a halldle The
first argument to RENAME is the original handle. You may refer to this hand-
le by its number or its name. The second argument is the new handle name.
The RESIZE (RES) option lets you increase or decreasc thc number of pagts
assigned to a handle. Its two arguments are the same as those of CREATE.
The SAVE option allows you to savc the contents of thc t~xpanded memory
pages associated with an EMS handle to a file. This option rcquires that you
also specify the handle namc (or number) and the file name.
The LOAD option allows you to restore the contents of expanded mcmory
pages that have been stored in a file. This option requires that you also
specify the handle name (or number) and the file name which contains the
data you want to restore. The number of pages required will be automatically
allocated based on the files size.
The EMS programs also respond to the options common to all the programs
supplied with your QEMM-386 programs:
O NOPAUSEONERROR (NOPE) instructs EMS not to pause on error.
Ll PAUSE instructs the program to pause while parsing commands.
O HELP displays EMS help tcxt.
O ? Iists all EMS command paramcters.
You can load EMS2EXT as described in the EMS2EXT section of this chapter,
but without specifying any memory parameter at all. EMS2EXT will be resi-
dent, but it will not allocate any mcmory. It will, howcver, recognize as its
memory a handle with the name "EM52EXT". You can then, as needcd, cre-
ate, grow, or shrink the amount of extendcd memory for this handle using
EMS.COM.
This capability should only be used in special situations when you know
how and when the program will use extended memory. For instance, a pro-
gram could be given extended memory only while it is running. You could
make a batch file wich ran EMS CREATE "EMS2EXT" 128K bcfore running
the application. When the program terminates, allotller EMS statemcnt could
frec thc m(~m(lry
4X CHAPTER X: OTHER QEMM-~.ts~6 PROGRAMS